"""
list：
    列表的格式：
        [数据1，数据2，数据3，数据4，……]
        列表可以一次性存储多个数据，且可以是不同类型的数据，如：列表内存储列表[[list1],[list2],……]、元组[(tupe1),(tupe2),……]、等等
    对列表的一些常用操作：
        增、删、改、查
    1、查找
         1.1、下标
         1.2、index()：返回指定数据所在位置的下标
            语法：列表.iindex(数据，开始位置下标，结束位置下标)
         1.3、count：统计元素出现的次数
         1.4、len：统计容器内元素的个数
         1.5、判断某个元素是否 在/不在 容器内

    2、增加：作用-增加指定数据到列表中
        2.1、append()：列表结尾追加数据，注：如果append()追加的数据是一个序列，则追加整个序列到列表
            语法：列表序列.append(数据)
        2.2、extend()：列表结尾追加数据，如果数据是一个序列，则将这个序列的数据逐一加到列表
            语法：列表序列.extend(数据)
        2.3、insert()：指定位置新增数据
            语法：列表序列.insert(位置下标，数据)

    3、删除
        3.1、del：
            语法：del 语法
        3.2、pop()：删除指定下标的数据（默认为最后一个），并返回该数据。
            语法：列表序列.pop(下标)
        3.3、remove()：移除列表中某个数据的第一个匹配项。
            语法：列表序列.remove(数据)
        3.4、clear()：清空列表

    4、修改
        4.1、修改指定下表数据：list=["小小","哒哒","哈哈",]list[下标]="A"，小小就等于A了
        4.2、逆置：reverse()          注：此方法会修改原始数据
            语法：列表序列.reverse()
        4.3、逆置：reversed()         注：此方法不会修改原始数据
            语法：列表序列.reversed()
        4.4、排序：sort()             注：此方法会修改原始数据
            语法：列表序列.sort()      注：reverse表示排序规则，reverse=True表示降序，reverse=False表示升序(默认)
        4.5、排序：sorted()             注：此方法不会修改原始数据
            语法：列表序列.sort()      注：reverse表示排序规则，reverse=True表示降序，reverse=False表示升序(默认)
        4.6、复制：copy()
        4.7、列表嵌套逐层取值
    5、列表的循环遍历
        5.1、while循环

"""
# # 1、查找
# name_list = ["Tom", "jier", "jieke", "Tom", "rose"]
#
# # 1.1、下标
# print(name_list[0])  # 返回出列表内第一条数据
# print(name_list[2])  # 返回出列表内第三条数据
# print(name_list[3])  # 返回出列表内第四条数据
#
# # 1.2、函数 index():
# print(name_list.index("Tom"))  # 返回第一条数据的下标
# print(name_list.index("Tom", 1, 5))  # 元素：Tom、开始下标：1、结束下标：5，所以返回的是第二个Tom的下标位置
# # print(name_list.index("Tom", 1, 3))  # 元素：Tom、开始下标：1、结束下标：3，找不到会返回报错
#
# # 1.3、count
# print(name_list.count("Tom"))  # 返回列表中出现Tom的次数：2
# print(name_list.count("jieke"))  # 返回列表处出现jieke的次数：1
# print(name_list.count("TTTTT"))  # 当查找的元素不存在列表中时，返回：0
#
# # 1.4、len
# print(len(name_list))  # 返回当前列表中一共有多少个元素
#
# # 1.5、True/False
# print("Tom" in name_list)  # Tom在列表中，故返回True（这句话的意思是，Tom 在 name_list中，肯定是对的）
# print("Tom" not in name_list)  # Tom在列表中，故返回False（这句话的意思是，Tom 不在 name_list中，肯定是错的）


# =================================*************************************=================================

# 2、增加

# list1 = ["小红", "小花", "小刚", "小李", "小黑", "小花"]
# # 2.1、append()，增加单个数据
# list1.append("小六")  # 在结尾处增加了一条数据
# print(list1)
#
# # append()，增加序列；如果追加的是一个序列，则追加整个序列到列表
# list2 = ["rose", "jack"]
# list1.append(list2)
# print(list1)

# # 2.2、extend(),追加单个数据
# list1.extend("小明")  # 增加的小明，是将小明两个字看做是两条数据，['小红', '小花', '小刚', '小李', '小黑', '小花', '小', '明']
# print(list1)
#
# # extend(),追加序列
# list3 = ["Tom", "Jerry"]
# list1.extend(list3)
# print(list1)
#
# # 2.3、insert()
# list1.insert(1, "小A")  # insert有两个参数，一个是 位置下标，一个是数据，会根据指定的下标去增加数据
# print(list1)
# list1.insert(-1, "小B")  # 可以指定负数去指定后面的位置，-1 是倒数第二条数据，什么？要是想增加到最后一条怎么办？  使用append()去增加啊。
# print(list1)

# =================================*************************************=================================

# 3、删除
# name_list = ["小红", "小花", "小刚", "小李", "小黑", "小花"]
# # 3.1、del：删除整个列表
# del name_list
# print(name_list)  # 结果是报错，因为已经将这个列表，从内存处就已经删除了，所以打印的时候找不到这个数据
# # 删除列表年内某个元素（根据下表来删除）
# del name_list[0]  # 从下标来看，删除了第一个数据。
# print(name_list)

# # 3.2、pop(下表)：根据下标删除指定元素
# name_list.pop(2)  # 删除了下标为2的元素
# print(name_list)
# # 不给参数，默认删除最后一个
# name_list.pop()  # 未填写参数，默认删除最后一个元素
# print(name_list)
# # 可以返回这个元素，将这个删除的元素赋值给另外的参数
# res = name_list.pop(2)  # 删除了列表中下标为2的元素，并将此元素赋值给了res，然后打印res可以看出被删除的元素
# print(res)
# res2 = name_list.pop()  # 未定义下标数值，默认删除最后一个，打印res2查看被删除的元素
# print(res2)

# # 3.3、remove()：删除第一个匹配项，
# name_list.remove("小花")  # 列表中有两个元素小花，默认删除的是第一个元素，第二个元素还在列表中
# print(name_list)
# # 删除的数据如果不存在，则会报错
# name_list.remove("小花1")  # 报错：not in list
# print(name_list)

# # 3.4、clear()：清空列表中的数据，列表还在的；
# # clear 和 del的区别是：clear清空列表数据，列表还在；而del直接是直接将列表给删了。
# # del：就好像你把一碗饭给摔了，饭没了，碗也破了，没得吃了；clear：就相当于只是把饭给摔了，碗还在，还能添饭继续吃。
# name_list.clear()
# print(name_list)  # 将此列表中的所有元素都给清空了

# =================================*************************************=================================

# 4、修改
# name_list = ["小红", "小花", "小刚", "小李", "小黑", "小花"]

# # 4.1、根据下标直接进行修改元素
# name_list[0] = "Tom"  # 将列表中第一个元素修改成了指定的元素
# print(name_list)

# num = [1, 2, 8, 6, 4, 9, 3, 21, 7, 545, 9, 4, 2, 1, 6, 8, 6, 8]
# 4.2、逆置：列表序列.reverse()，会修改原始数据
# print(num)  # 查看原始元素顺序
# num.reverse()  # 修改了元素顺序，降序排列
# print(num)

# # 4.3、逆置：reversed(列表)：不会修改原始数据，得到的是一个对象，如果想要列表，需进一步转化
# new_num = reversed(num)  # 将修改顺序的列表赋值给了new_num，这样就不会修改原来的num的数据了
# print(new_num)
# new_num = list(reversed(num))  # 上面的new_num得到的是一个对象，如果想要列表，需进一步转化
# print(new_num)
# print(num)  # 查看原始元素顺序，并没有改变原始数据

# 4.4、排序：sort()：此方法会修改原始数据，比如说顺序
# 升序：reverse=False表示升序（默认）默认可以不传入
# print(num)  # 查看原始元素顺序
# num.sort()  # 将列表的数据按升序进行排序了，并修改了原始列表内元素的数据顺序
# print(num)
# # 降序：reverse表示排序规则，reverse=True表示降序，reverse=False表示升序（默认）
# print(num)  # 查看原始元素顺序
# num.sort(reverse=True)  # 降序排序
# print(num)

# # 4.5、排序：sorted(列表)：此方法不会修改原始数据，比如说顺序
# print(num)  # 查看最初的原始元素顺序
# new_num = sorted(num)  # 将修改的值赋值给了new_num，这样就不会修改原来num里的数据了
# print(new_num)
# print(num)  # 查看原始元素顺序

# # 4.6、复制、拷贝
# name_list = ["小红", "小花", "小刚", "小李", "小黑", "小花"]
# name_list2 = name_list.copy()  # 将name_list的内容赋值给了name_list2，虽然得到的数据是一样的，但是他俩的id不一样
# print(name_list)
# print(name_list2)
# # 查看他俩的id
# print(id(name_list))
# print(id(name_list2))

# # 4.7、列表嵌套逐层取值：
# name_list = [["小红", "小花", "小刚"], ["Tom", "jack", "rose"], [1, 2, 3, 6]]  # 列表中嵌套列表
# print(name_list[1])  # 根据下标获取到列表中的第二个列表
# # 获取列表中第二个列表内的第二条元素
# print(name_list[1][1])

# # 5、列表的循环遍历
# name1 = ["小红", "小花", "小刚"]
# # # 5.1、使用while循环进行遍历
# i = 0  # 循环变量：从0开始，所以 i=0
# while i < len(name1):  # 循环判断：位置长度可以使用len()来定义这个列表的长度
#     print(name1[i])  # 循环体：根据下标来取这个列表的值，因为上述有做判断，如果i小于这个列表的话，就打印这个i
#     i += 1  # 循环变量发生变化：
#
# # 5.2、使用for循环进行遍历
# for i in name1:  # for循环会依次遍历出列表中的内容
#     print(i)

# list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# for i in list1:
#     if i==3:
#         list1.remove(i)
#         continue
#     print(i)
# list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# for i in range(len(list1)):
#     if list1[i]==3:
#         list1.remove(list1[i])
#         continue
#     print(list1[i])
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(len(list1)):
    if list1[i] == 3:
        list1.remove(list1[i])
        continue
    print(list1[i])

# 作业：将8个老师随机分配到三个班级内
import random

n = random.randint(1, 3)
teachers = [1, 2, 3, 4, 5, 6, 7, 8]
room = [[], [], []]

